US patent application No 20020199175 describes a technique for protecting data processing operations against errors. The application specifically concerns so-called soft errors. A typical cause of soft errors is radioactive radiation, when this radiation topples data values observed by a data processor. Such soft errors cannot be traced to permanent circuit or program faults. As used herein, soft errors are errors that cannot be traced to a permanent hardware or program error, whatever their cause. When a soft error occurs during execution of a computer program by a data processor this may give rise to erroneous output data from the processor or even to erroneous program flow.
US patent application No 20020199175 describes that program elements may be protected against soft errors by duplication of instruction execution, i.e. by expanding a program with redundant instructions selected to produce duplicate results. The duplicate results are compared with the results of normal instructions of the program. When the results do not match, it is assumed that a soft error has occurred and corrective action is taken.
US patent application No 20020199175 applies this technique only to selected parts of the program, in order to avoid unnecessary reductions in program performance. Various criteria are described for selecting these parts. These techniques include identifying program parts that use hardware that is more than usually susceptible to soft errors, identifying program parts that use variables that are kept in soft error susceptible memory for a long time and program parts that use data that may have a large impact on processing.
Other techniques of protection against soft errors include the use of data that is encoded in an error correcting code combined with error correction hardware. Also, data processing circuits may be specifically designed to have a better tolerance for the causes of soft errors. However, these techniques come at the cost of hardware overhead. The use of duplicative instructions avoids the need for such hardware overhead. Unfortunately, this has its own overhead cost, in that program execution is slowed down and more power is consumed to execute the program, even if duplication is applied only to selected parts of the program.